/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.adapters;

import java.util.ArrayList;
import java.util.List;
import org.cip.esymons.tesoreria.be.CuentaIngreso;
import org.cip.esymons.tesoreria.be.DetPagoAgrupado;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;

/**
 *
 * @author Gilmar Montoya
 */
public class AdaptadorDeudaMovimientoCuentaIngreso implements DeudaCuentaIngresoInterfaz {

    private DeudaMovimiento deudaMovimiento;
    private boolean listarUnoPorUno = false;

    public AdaptadorDeudaMovimientoCuentaIngreso(DeudaMovimiento deudaMovimiento) {
        this.deudaMovimiento = deudaMovimiento;
    }

    public AdaptadorDeudaMovimientoCuentaIngreso(DeudaMovimiento deudaMovimiento, boolean listarUnoPorUnoDeudaOtros) {
        this.deudaMovimiento = deudaMovimiento;
        this.listarUnoPorUno = listarUnoPorUnoDeudaOtros;
    }

    public List<DetPagoAgrupado> getListaDeudaxIngreso() {
        List<DetPagoAgrupado> lista = new ArrayList<DetPagoAgrupado>();
        DetPagoAgrupado dci = null;
        for (MovimientoCuenta mc : deudaMovimiento.getListaMovimientos()) {
            dci = new DetPagoAgrupado();
            dci.setAnio(mc.getMcuAnio());
            dci.setCantidad(1);
            if (mc.getFkCinCodigo() == null) {
                dci.setCuentaIngreso(new CuentaIngreso("000", "Fraccionamiento"));
                dci.setDescripcion("Fraccionamiento");
            } else {
                dci.setCuentaIngreso(mc.getFkCinCodigo());
                dci.setDescripcion(mc.getFkCinCodigo().getNombreLargoCuentaIngreso() + "-" + mc.getDescripcion());
            }
            dci.setMes(mc.getMcuMes());
            dci.getListaMovimientos().add(mc);
            dci.setValor(mc.getMcuSaldo());
            dci.setValorModificable(mc.getMcuSaldo());
            if (lista.contains(dci)) {
                if (listarUnoPorUno) {
                    lista.add(dci);
                } else {
                    DetPagoAgrupado deuda = lista.get(lista.indexOf(dci));
                    deuda.setCantidad(deuda.getCantidad() + 1);
                    deuda.setAnio(mc.getMcuAnio());
                    deuda.setMes(mc.getMcuMes());
                    deuda.setValor(deuda.getValor() + mc.getMcuSaldo());
                    deuda.setValorModificable(deuda.getValorModificable() + mc.getMcuSaldo());
                    deuda.getListaMovimientos().add(mc);
                }
            } else {
                lista.add(dci);
            }
        }
        return lista;
    }

    public void setListaDeudaxIngreso(List<DetPagoAgrupado> listaDeudaxIngreso) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public DeudaMovimiento getDeudaMovimiento() {
        return deudaMovimiento;
    }

    public void setDeudaMovimiento(DeudaMovimiento deudaMovimiento) {
        this.deudaMovimiento = deudaMovimiento;
    }
}
